package testTP4;

import org.junit.*;
import static org.junit.Assert.*;
import firewall.*
import firewallConfig.*

class TestBloqueos {
	
	
	@Test
	public void testeaForweardeoDeUnPaquete() {
		
		Firewall firewall =
		FirewallBuilder.configurar {
			regla {
				ip "DESTINO"
					abrir "192.168.2.1" a "192.168.2.10"
					bloquear "192.168.2.11" a "192.168.2.20"
					abrir "192.168.2.30"
					bloquear "192.168.2.31"
				ip "ORIGEN"
					abrir "200.1.1.1" a "200.1.1.10"
					bloquear "200.1.1.11" a "200.1.1.20"
				puerto "ORIGEN"
					abrir 1000 a 2000
					bloquear 3000 a 4000
					abrir 8080
					bloquear 9090
			}
		}
		
		FirewallMock mock = new FirewallMock();
		mock.agregarFirewall(firewall);
		
		// Permite pasar
		Paquete paquete = new Paquete("200.1.1.5","192.168.2.5",1500);
		assertTrue(firewall.evaluaPaquete(paquete));
		
		paquete = new Paquete("200.1.1.4","192.168.2.30",8080);
		assertTrue(firewall.evaluaPaquete(paquete));
		
		paquete = new Paquete("200.1.1.3","192.168.2.6",1400);
		assertTrue(firewall.evaluaPaquete(paquete));
		
		// Bloquea
		paquete = new Paquete("200.1.1.5","192.168.2.15",1500);
		assertFalse(firewall.evaluaPaquete(paquete));
		
		paquete = new Paquete("200.1.1.4","192.168.2.31",8080);
		assertFalse(firewall.evaluaPaquete(paquete));
		
		paquete = new Paquete("200.1.1.3","192.168.2.6",3500);
		assertFalse(firewall.evaluaPaquete(paquete));
		
		paquete = new Paquete("200.1.1.3","192.168.2.6",9090);
		assertFalse(firewall.evaluaPaquete(paquete));
		
		paquete = new Paquete("200.1.1.12","192.168.2.6",1300);
		assertFalse(firewall.evaluaPaquete(paquete));
	}
	
}
